FillV2

创建一个Tensor,根据指定的shape,将其值由value进行填充。

输入:
  • value - 填充值的地址

  • length - 由指定shape计算出的张量总长度。

  • type_size - 填充值的数据类型的长度

  • core_mask - 核掩码。

输出:
  • output - 输出地址。

支持平台:

FT78NE MT7004

备注

  • FT78NE 支持int8, int16, int32, fp32, fp64, cplx64, cplx128

  • MT7004 支持fp16, fp32, int16, int32, cplx64

共享存储版本:

void anytype_fillv2_s(void *value, void *output, int length, int type_size, int core_mask)

对于不同数据类型,改变type_size参数即可。

C调用示例:

 1void main() {
 2    float* input = (float*)0xA0000000;
 3    float value = 789.1;
 4    float* output = (float*)0x88000000;
 5    int i;
 6    int length = 1000;
 7    int core_mask = 0b1111;
 8    int core_id = get_core_id();
 9    int logic_core_id = GetLogicCoreId(core_mask, core_id);
10    int core_num = GetCoreNum(core_mask);
11    if (logic_core_id == 0) {
12        *input = value;
13    }
14    sys_bar(0, core_num); // 初始化参数完成后进行同步
15    anytype_fillv2_s(input, output, length, 4, core_mask);
16}

私有存储版本:

void anytype_fillv2_p(void *value, void *output, int length, int type_size, int core_mask)

C调用示例:

 1void main() {
 2    float* input = (float*)0x10000000;
 3    float value = 789.1;
 4    float* output = (float*)0x10010000;
 5    int i;
 6    int length = 1000;
 7    int core_mask = 0b0001; // 要启动哪一个核,就将哪一位设置为1,只允许存在一个核心启动
 8    *input = value;
 9    anytype_fillv2_p(input, output, length, 4, core_mask);
10}